package com.xclink.wechat.service;

import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Map;

/**
 * 获取服务器上的 AccessToken Created by ljp on 2017/10/19.
 */
@Service
public class WxTokenService {
	private String APP_ID = "wx8af387d04245cd20";
	private String APP_SECRET = "3f315c56112adb187961fcefe2b575a9";

	// 获取微信access_token
	public String getAccessToken() {
		String url = " https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
		url = url.replace("APPID", APP_ID).replace("APPSECRET", APP_SECRET);
		String tokenJsonStr = SendGET(url);
		Map tokenMap = JSON.parseObject(tokenJsonStr);
		//凭证有效期		
		System.out.println(tokenMap.get("expires_in"));
		// 获取access_token
		return (String) tokenMap.get("access_token");
	}

	public String SendGET(String url) {
		System.out.println("-----SendGET---------begin-----");
		String result = "";// 访问返回结果
		BufferedReader read = null;// 读取访问结果
		try {
			// 创建url
			URL realurl = new URL(url);
			// 打开连接
			URLConnection connection = realurl.openConnection();
			// 设置通用的请求属性
			connection.setRequestProperty("accept", "*/*");
			connection.setRequestProperty("connection", "Keep-Alive");
			connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
			// 建立连接
			connection.connect();
			read = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
			String line;// 循环读取
			while ((line = read.readLine()) != null) {
				result += line;
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (read != null) {// 关闭流
				try {
					read.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		System.out.println("-----SendGET---------end --**---");
		System.out.println(result);
		System.out.println("-----SendGET---------end ---***--");
		return result;
	}

	// 获取微信的js接口的临时票据
	private String getTicket(String token) {
		String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + token + "&type=jsapi";
		String ticketJsonStr = SendGET(url);
		Map ticketMap = JSON.parseObject(ticketJsonStr);
		// 获取jsapi_ticket
		return (String) ticketMap.get("ticket");
	}
//  微信网页授权
	public String LoadCode(String redirectUrl) {
		System.out.println("--------------LoadCode begin-----------------");
		try {
			redirectUrl = URLEncoder.encode(redirectUrl, "utf-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		System.out.println("------------URLEncoder.encode-------------------" + redirectUrl);
		String codurl = "https://open.weixin.qq.com/connect/oauth2/authorize?" 
		+ "appid=" + APP_ID 
		+ "&redirect_uri="+ redirectUrl
		+ "&response_type=code" + "&scope=snsapi_base" + "&state=123#wechat_redirect";
		System.out.println("---------codurl----------------------" + codurl);
		// SendGET(codurl);
		return codurl;

	}
}
